﻿Imports DTO
Imports DAO
Imports BUS

Public Class frmThemNhanVien : Inherits DevComponents.DotNetBar.Office2007Form
    ' Hàm reset
    Private Sub Reset()
        txtMaNhanVien.Text = ""
        txtHoTen.Text = ""
        txtDiaChi.Text = ""
        txtDienThoai.Text = ""
        dtpNgaySinh.Value = New DateTime(1990, 1, 1)
        cboBangCap.SelectedIndex = 1
        cboBoPhan.SelectedIndex = 1
        cboChucVu.SelectedIndex = 1
    End Sub

    ' Kiểm tra tên nhân viên: không được rổng
    Private Function KiemTraTenNhanVien() As Boolean
        If txtHoTen.Text = "" Then
            Return False
        End If
        Return True
    End Function

    ' Kiểm tra địa chỉ: không được rổng:
    Private Function KiemTraDiaChi() As Boolean
        If txtDiaChi.Text = "" Then
            Return False
        End If
        Return True
    End Function

    ' Kiểm tra ngày sinh: phải đủ 18 tuổi
    Private Function KiemTraNgaySinh() As Boolean
        If (DateTime.Now.Year - dtpNgaySinh.Value.Year < 18) Then
            Return False
        End If
        Return True
    End Function

    Private Function KiemTraDienThoai() As Integer
        Dim str As String = txtDienThoai.Text

        ' Phải toàn là số
        If (txtDienThoai.MaskCompleted = False) Then
            Return -1
        End If

        ' Số đầu là 0
        If (str(0) <> "0") Then
            Return 0
        End If

        ' Số thứ hai là 9 hoặc là 1:
        If (str(1) <> "9" And str(1) <> "1") Then
            Return 2
        End If
        Return 1
    End Function

    Private Function KiemTraDuLieu() As Boolean
        If (KiemTraTenNhanVien() = False) Then
            MessageBox.Show("Họ tên không được để trống!", "Thong Bao")
            txtHoTen.Focus()
            Return False
        End If

        If (KiemTraDiaChi() = False) Then
            MessageBox.Show("Địa chỉ không được để  trống!", "Thong Bao")
            txtDiaChi.Focus()
            Return False
        End If

        If (KiemTraNgaySinh() = False) Then
            MessageBox.Show("Nhân viên có trình độ từ tú tài thì ít nhất phải đủ 18 tuổi.", "Thong Bao")
            dtpNgaySinh.Focus()
            Return False
        End If

        Dim ktdt As Integer = KiemTraDienThoai()
        If (ktdt = (-1)) Then
            ' MessageBox.Show("Điện thoại phải có độ dài là 10 hoặc 11.", "Thong Bao")
            MessageBox.Show("Điện thoại phải toàn là số", "Thong Bao")
            txtDienThoai.Focus()
            Return False
        Else
            If (ktdt = 0) Then
                MessageBox.Show("Số đầu tiên của đầu số phải là 0", "Thong Bao")
                txtDienThoai.Focus()
                Return False
            Else
                If (ktdt = 2) Then
                    MessageBox.Show("Số thứ hai của đầu số phải là 1 hoặc 9", "Thong Bao")
                    txtDienThoai.Focus()
                    Return False
                End If
            End If
        End If
        Return True
    End Function


    Private stt As Integer = 0
    Dim listDSSV As New List(Of CNhanVienDTO)
    Private Sub ResetData()
        listDSSV.Clear()
        listDSSV = New CNhanVienBUS().LoadDanhSachNhanVien()
        lvDanhSachNhanVien.Items.Clear()
        Dim i As Integer = listDSSV.Count
        stt = 0
        If (i <> 0) Then
            Dim liv As ListViewItem
            While stt < i
                liv = New ListViewItem(stt)
                liv.SubItems.Add(listDSSV(stt).Ma)
                liv.SubItems.Add(listDSSV(stt).HoTen)
                lvDanhSachNhanVien.Items.Add(liv)
                stt += 1
            End While
        End If
    End Sub

    Private Sub frmThemNhanVien_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Load danh sách nhân viên vào listview
       


        ' Load bộ phận vào combobox
        Dim _bophanbus As New CBoPhanBUS()
        cboBoPhan.Items.Clear()
        Dim listbophan As List(Of CBoPhanDTO) = _bophanbus.LoadDanhSachBoPhan()
        For Each _bophan As CBoPhanDTO In listbophan
            cboBoPhan.Items.Add(_bophan)
        Next
        cboBoPhan.ValueMember = "Ma"
        cboBoPhan.DisplayMember = "Ten"

        ' Load Bằng cấp vào combobox
        Dim _bangcapbus As New CBangCapBUS()
        cboBangCap.Items.Clear()
        Dim listbangcap As List(Of CBangCapDTO) = _bangcapbus.LoadDanhSachBangCap()
        For Each _bangcap As CBangCapDTO In listbangcap
            cboBangCap.Items.Add(_bangcap)
        Next
        cboBangCap.ValueMember = "Ma"
        cboBangCap.DisplayMember = "Ten"


        ' Load Chức vụ vào combobox
        Dim _chucvubus As New CChucVuBUS()
        cboChucVu.Items.Clear()
        Dim listChucVu As List(Of CChucVuDTO) = _chucvubus.LoadDanhSachChucVu()
        For Each _chucvu As CChucVuDTO In listChucVu
            cboChucVu.Items.Add(_chucvu)
        Next
        cboChucVu.ValueMember = "Ma"
        cboChucVu.DisplayMember = "Ten"

        Dim listquyenhan As List(Of CQuyenHanDTO) = New CQuyenHanBUS().LoadQuyenHan()
        For Each quyen As CQuyenHanDTO In listquyenhan
            cboQuyenHan.Items.Add(quyen)
        Next

        cboQuyenHan.ValueMember = "Ma"
        cboQuyenHan.DisplayMember = "Ten"
        cboQuyenHan.SelectedIndex = 0

        ResetData()
        Reset()

    End Sub


    Private Sub btnThem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnThem.Click
        ' Kiểm tra dữ liệu trước khi thưc hiện thao tác thêm:
        If (KiemTraDuLieu() = False) Then
            Return
        End If
        Dim _nvDTO As New CNhanVienDTO()
        _nvDTO.HoTen = txtHoTen.Text
        _nvDTO.NgaySinh = dtpNgaySinh.Value
        _nvDTO.DiaChi = txtDiaChi.Text
        _nvDTO.DienThoai = txtDienThoai.Text
        Dim bc As CBangCapDTO = cboBangCap.SelectedItem
        _nvDTO.MaBangCap = bc.Ma

        Dim bp As CBoPhanDTO = cboBoPhan.SelectedItem
        _nvDTO.MaBoPhan = bp.Ma

        Dim cv As CChucVuDTO = cboChucVu.SelectedItem
        _nvDTO.MaChucVu = cv.Ma

        Dim kq As Boolean = New CNhanVienBUS().ThemNhanVien(_nvDTO)
        If (kq) Then
            listDSSV.Add(_nvDTO)
            Dim liv As ListViewItem = New ListViewItem(stt)
            liv.SubItems.Add(_nvDTO.Ma)
            liv.SubItems.Add(_nvDTO.HoTen)
            lvDanhSachNhanVien.Items.Add(liv)
            stt += 1
            MessageBox.Show("Thêm thành công", "Thong Bao")
        Else
            MessageBox.Show("Thêm thất bại!", "Thong Bao")
        End If
        Reset()
    End Sub

    Private Sub lvDanhSachNhanVien_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvDanhSachNhanVien.SelectedIndexChanged
        If (lvDanhSachNhanVien.SelectedItems.Count > 0) Then
            Dim lvi As ListViewItem = lvDanhSachNhanVien.SelectedItems(0)
            Dim nvien As CNhanVienDTO = listDSSV.Item(Convert.ToInt32(lvi.SubItems(0).Text))
            txtMaNhanVien.Text = nvien.Ma
            txtHoTen.Text = nvien.HoTen
            txtDienThoai.Text = nvien.DienThoai
            txtDiaChi.Text = nvien.DiaChi

            Dim i As Integer = 0
            For Each vl As CBangCapDTO In cboBangCap.Items
                If vl.Ma = nvien.MaBangCap Then
                    Exit For
                End If
                i += 1
            Next
            cboBangCap.SelectedIndex = i

            i = 0
            For Each vl As CBoPhanDTO In cboBoPhan.Items
                If vl.Ma = nvien.MaBoPhan Then
                    Exit For
                End If
                i += 1
            Next
            cboBoPhan.SelectedIndex = i

            i = 0
            For Each vl As CChucVuDTO In cboChucVu.Items
                If vl.Ma = nvien.MaChucVu Then
                    Exit For
                End If
                i += 1
            Next
            cboChucVu.SelectedIndex = i

            i = 0
            For Each vl As CQuyenHanDTO In cboQuyenHan.Items
                If vl.Ma = nvien.MaQuyenHan Then
                    Exit For
                End If
                i += 1
            Next
            cboQuyenHan.SelectedIndex = i

            dtpNgaySinh.Value = nvien.NgaySinh
        End If
    End Sub

    Private Sub btnHuy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHuy.Click
        Reset()
    End Sub


    Private Sub btnCapNhat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapNhat.Click
        If (KiemTraDuLieu() = False) Then
            Return
        End If
        Dim _nvDTO As New CNhanVienDTO()
        _nvDTO.HoTen = txtHoTen.Text
        _nvDTO.NgaySinh = dtpNgaySinh.Value
        _nvDTO.DiaChi = txtDiaChi.Text
        _nvDTO.DienThoai = txtDienThoai.Text
        Dim bc As CBangCapDTO = cboBangCap.SelectedItem
        _nvDTO.MaBangCap = bc.Ma

        Dim quyen As CQuyenHanDTO = cboQuyenHan.SelectedItem
        _nvDTO.MaQuyenHan = quyen.Ma

        Dim bp As CBoPhanDTO = cboBoPhan.SelectedItem
        _nvDTO.MaBoPhan = bp.Ma

        Dim cv As CChucVuDTO = cboChucVu.SelectedItem
        _nvDTO.MaChucVu = cv.Ma

        _nvDTO.Ma = Convert.ToInt32(txtMaNhanVien.Text)

        Dim kq As Boolean = New CNhanVienBUS().CapNhatNhanvien(_nvDTO)
        If (kq) Then
            ResetData()
            MessageBox.Show("Câp nhật thành công", "Thong Bao")
        Else
            MessageBox.Show("Cập nhật thất bại!", "Thong Bao")
        End If
        Reset()
    End Sub
End Class